home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / clean / sun3.lha / Sun3 / seqdemos / revtwice.icl < prev    next >
Text File  |  1992-08-07  |  774b  |  34 lines

  1. MODULE revtwice;
  2.  
  3. <<
  4. Reversing a list a number of times using Twice.
  5.  
  6. A list containing 25 integers is reversed 65536 times by means
  7. of four applications of the higher order function Twice.
  8.  
  9. Set the size of the A and B stack to at least 2m.
  10. For less garbage collection try a bigger heap (e.g. 4m).
  11. >>
  12.  
  13. IMPORT deltaM ,deltaI;
  14.  
  15. RULE
  16.  
  17. ::  Revv [INT]  -> [INT];
  18.     Revv l      -> Rev l [];
  19.  
  20. ::  Rev [INT]   [INT]   -> [INT];
  21.     Rev [x|r]   list    -> Rev r [x | list];
  22.     Rev []      list    -> list;
  23.  
  24. ::  FromTo INT  INT -> [INT];
  25.     FromTo a    b   -> [a]                  , IF = a b
  26.                     -> [a | FromTo (++ a) b];
  27.  
  28. ::  Twice (=> x x)  x -> x;
  29.     Twice f         x -> f (f x);
  30.  
  31. ::  Start -> [INT];
  32.     Start -> Twice Twice Twice Twice Revv (FromTo 1 25);
  33.  
  34.